﻿/*
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <stack>
using namespace std;
//给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
//有效字符串需满足：
//左括号必须用相同类型的右括号闭合。
//左括号必须以正确的顺序闭合。

bool isValid(string s)
{
	stack <char> tmp;
	for (int i = 0; i < s.size(); i++)
	{
		if (!tmp.empty())
		{
			if (s[i] == ')'&&tmp.top() == '(' ||
				s[i] == '}'&&tmp.top() == '{' ||
				s[i] == ']'&&tmp.top() == '[')
			{
				tmp.pop();
				continue;
			}
		}
		tmp.push(s[i]);
	}
	return tmp.empty();

}

bool isValid1(string s) 
{
	stack <char> tmp;
	for (int i = 0; i < s.size(); i++)
	{
		if (tmp.empty() && (s[i] == ')' || s[i] == '}' || s[i] == ']'))
		{
			return false;
		}
		if (s[i] == ')')
		{
			if (tmp.top() =='(')
			{
				tmp.pop();
			}
			else
			{
				return false;
			}
		}
		
		else if (s[i] == '}')
		{
			if (tmp.top() == '{')
			{
				tmp.pop();
			}
			else
			{
				return false;
			}
		}
		
		else if (s[i] == ']')
		{
			if (tmp.top() == '[')
			{
				tmp.pop();
			}
			else
			{
				return false;
			}
		}
		else
		{
			tmp.push(s[i]);
		}
	}
	return tmp.empty();
}

int main()
{
	string s = "({[])";
	cout << isValid(s) << endl;
	system("pause");
	return 0;
}
*/